<?php

/**
 * This is the model class for table "tournaments".
 *
 * The followings are the available columns in table 'tournaments':
 * @property integer $idTournament
 * @property string $name
 * @property string $description
 * @property string $password
 * @property integer $idUserAdmin
 * @property integer $idSeason
 * @property integer $idLeague
 *
 * The followings are the available model relations:
 * @property TournamentNews[] $tournamentNews
 * @property Leagues $idLeague0
 * @property Seasons $idSeason0
 * @property Users $idUserAdmin0
 * @property Users[] $users
 * @property UsersOdds[] $usersOdds
 */
class Tournaments extends CActiveRecord
{
	public static function getTournamentsByUserAndSeason( $idUser, $idSeason ){
		$result = Yii::app()->db->createCommand("SELECT t.*, tu.points, tu.byDefault FROM tournaments AS t
				INNER JOIN tournaments_users AS tu ON t.idTournament = tu.idTournament
				WHERE tu.idUser = $idUser AND t.idSeason = $idSeason" )->queryAll();
	
		return $result;
	}
	
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'tournaments';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('name, description, idUserAdmin, idSeason, idLeague', 'required'),
			array('idUserAdmin, idSeason, idLeague', 'numerical', 'integerOnly'=>true),
			array('name', 'length', 'max'=>65),
			array('description', 'length', 'max'=>500),
			array('password', 'length', 'max'=>32),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('idTournament, name, description, password, idUserAdmin, idSeason, idLeague', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'tournamentNews' => array(self::HAS_MANY, 'TournamentNews', 'idTournament'),
			'idLeague0' => array(self::BELONGS_TO, 'Leagues', 'idLeague'),
			'idSeason0' => array(self::BELONGS_TO, 'Seasons', 'idSeason'),
			'idUserAdmin0' => array(self::BELONGS_TO, 'Users', 'idUserAdmin'),
			'users' => array(self::MANY_MANY, 'Users', 'tournaments_users(idTournament, idUser)'),
			'usersOdds' => array(self::HAS_MANY, 'UsersOdds', 'idTournament'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'idTournament' => 'Id Tournament',
			'name' => 'Name',
			'description' => 'Description',
			'password' => 'Password',
			'idUserAdmin' => 'Id User Admin',
			'idSeason' => 'Id Season',
			'idLeague' => 'Id League',
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('idTournament',$this->idTournament);
		$criteria->compare('name',$this->name,true);
		$criteria->compare('description',$this->description,true);
		$criteria->compare('password',$this->password,true);
		$criteria->compare('idUserAdmin',$this->idUserAdmin);
		$criteria->compare('idSeason',$this->idSeason);
		$criteria->compare('idLeague',$this->idLeague);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return Tournaments the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
}
